<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
//Ultima verificacion: 23-11-2014 ; 23-02-2015
class Docente extends CI_Controller {
	//Metodo constructor de la clase
	function __construct(){
		parent::__construct();
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra un listado con todos los docentes activos o inactivos pero NO los borrados (-1)
	function consultar(){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == 1)){
			//Cargo el modelo donde estan los datos de los docentes registrados para pedirle un listado con todos ellos
			$this->load->model('m_docente');
			
			//Busco todos los docentes activos o inactivos, pero no los borrados.
			$listadoDocentes = $this->m_docente->buscar();
			
			//Le paso el listado de todos los docentes a la vista para que los muestre en una tabla
			$datos['docentes'] = $listadoDocentes;
			
			//Cargo la vista donde se muestra la tabla de docentes y la guardo en una variable para pasarsela a la vista principal
			$datosPrincipal['vista'] = $this->load->view('v_docentes', $datos, true);
			
			//Cargo la vista principal con los datos de la vista recien generada
			$this->load->view('v_sistema', $datosPrincipal);
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo solo se puede llamar con ajax
	//Sirve para eliminar al docente pasada por la url
	function eliminar($idDocente=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == 1)){
			//Segunda comprobacion: Que idDocente pasado sea numerico y mayor que cero.
			if(is_numeric($idDocente) && $idDocente>0){
				//Cargo el modelo donde estan los datos de los docentes registrados
				$this->load->model('m_docente');
				
				//Busco al docente que hay que eliminar
				$docente = $this->m_docente->get($idDocente);
				
				//Tercera comprobacion: Que el docente pasado por la url sea existente
				if($docente->num_rows() == 1){
					//Elimino al docente pasado por la url
					$respuesta = $this->m_docente->eliminar($idDocente, $this->session->userdata('idUsuarioLog'));
					
					//Busco todos los docentes activos o inactivos, pero no los borrados.
					$listadoDocentes = $this->m_docente->buscar();
					
					//Le paso el listado de todos los docentes a la vista para que los muestre en una tabla
					$datos['docentes'] = $listadoDocentes;
					
					//Cargo la vista donde se muestra la tabla de docentes
					$this->load->view('v_docentes', $datos);
				} else {
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					echo("No existe el registro seleccionado para borrar.");
				}
			} else {
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				echo("No se ha pasado los parametros necesarios para borrar un registro.");
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			echo("No tiene permiso para borrar un registro.");
		}
	}
				
	//Este metodo no se puede llamar con ajax
	//Este metodo realmente modifica los datos de un docente
	function modificar($idDocente=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == 1)){	   
			//Segunda comprobacion: Que se haya pasado por post el trato, color de fondo, color de texto y el estado del docente a modificar. 
			//Ademas que se haya pasado por la url el id del docente a modificar
			if(is_numeric($idDocente) && $idDocente>0 && $this->input->post('trato',true) != "" && $this->input->post('colorpicker1',true)!="" && $this->input->post('colorpicker2',true)!="" && ($this->input->post('estadoDocente',true) == '1' || $this->input->post('estadoDocente',true) == '0')){		
				//Cargo el modelo donde estan los datos de los docentes
				$this->load->model('m_docente');
				
				//Busco al docente que hay que modificar
				$docente = $this->m_docente->get($idDocente);
				
				//Tercera comprobacion: Que el docente pasado por la url sea existente
				if($docente->num_rows() == 1){					
					//Guardamos el id del archivo actual. Cero si no tiene asignado ninguno
					$idArchivoActual = $docente->row()->idArchivoCurriculum;					
					
					//Resultado 0 quiere decir que nada se ha modificado
					$resultado = 0;
					
					//Cargo el modelo donde estan los datos de los archivos
					$this->load->model('m_archivo');
					
					//Detalles de las configuraciones del archivo a subir (un documento en este caso)
					$config['upload_path'] = "./archivosPrivados-FPCL3QFs6DkBHihS3aJI/docentes";
					$config['allowed_types'] = 'doc|docx|xls|xlsx|pdf|ppt|xppt|pps';
					$config['max_size'] = '10000';
					$this->load->library('upload', $config);
					$this->upload->initialize($config);
					
					$archivo = '';
					//Si no se subio el archivo hacer lo siguiente
					if (!$this->upload->do_upload('curriculum')){
						$mensaje = ' No se ha subido ning\u00fan archivo curriculum o su archivo est\u00e1 fuera de las especificaciones.';
					//Si se subio el archivo hacer lo siguiente
					}else{
						//Datos del archivo subido
						$upload_data = $this->upload->data();
						$archivo = $upload_data['file_name'];
						$extensionArchivo = $upload_data['file_ext'];
						
						//Mensaje que se va a mostrar
						$mensaje = ' Se ha subido el curriculum correctamente.';
						
						// Determine Content Type
						switch ($upload_data['file_ext']){
						  case ".pdf": $ctype="application/pdf"; break; 
						  case ".exe": $ctype="application/octet-stream"; break; 
						  case ".zip": $ctype="application/zip"; break; 
						  case ".doc": $ctype="application/msword"; break; 
						  case ".xls": $ctype="application/vnd.ms-excel"; break; 
						  case ".ppt": $ctype="application/vnd.ms-powerpoint"; break; 
						  case ".gif": $ctype="image/gif"; break; 
						  case ".png": $ctype="image/png"; break; 
						  case ".jpeg": 
						  case ".jpg": $ctype="image/jpg"; break; 
						  default: $ctype="application/force-download"; 
						}
						
						//Si ya tenia archivo lo modificamos, si no tenia, creamos un nuevo registro en la base de datos
						$nuevoHash = random_string('alnum',20).$upload_data['file_ext'];
																		
						if($idArchivoActual != 0){
							//Modificamos el archivo en la base de datos
							$resultado += $this->m_archivo->modificar($idArchivoActual, $nuevoHash, $upload_data['file_name'], $upload_data['file_ext'], $ctype);
						}else{
							//Creamos el archivo en la base de datos
							$resultado += $this->m_archivo->crear($nuevoHash, $this->session->userdata('idUsuarioLog'), "archivosPrivados-FPCL3QFs6DkBHihS3aJI/docentes", $upload_data['file_name'], $upload_data['file_ext'], $ctype, 1, 1, $this->session->userdata('idUsuarioLog'));
							$idArchivoActual = $this->db->insert_id();
						}
					}
					
					//Formato fecha ARGENTINA
					$fecha1=$this->input->post('fechaIngresoDocente',true);
					//Formato fecha EEUU
					if($fecha1!="")$fecha2=date("Y-m-d",strtotime($fecha1));
					else $fecha2=null;
					
					//Modificamos el docente
					$resultado += $this->m_docente->modificar($idDocente,
															 $this->input->post('trato',true),
															 $this->input->post('colorpicker1',true),
															 $this->input->post('colorpicker2',true),
															 $fecha2,
															 $idArchivoActual,
															 $this->input->post('estadoDocente',true));
					
					if($archivo != '')	echo("<script> window.parent.actualizarArchivo('".base_url() .'archivo/hash/'.$nuevoHash."');</script>");
								
					if($resultado >= 1){										
						echo("<script> alert('El docente se ha modificado correctamente. ".$mensaje."');</script>");
					}else{
						echo("<script> alert('El docente no se ha modificado. Ha habido un error o los datos permanecieron iguales.');</script>");
					}
				} else {
					//El registro no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Este metodo crea un docente si no existe y si existe, lo modifica.
	function actualizar($idPersona=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1' || $this->session->userdata('permisoPreceptor') == 1)){	   
			//Segunda comprobacion: Que se haya pasado por post el trato, color de fondo, color de texto y el estado del docente a crear o modificar. 
			//Ademas que se haya pasado por la url el id de la persona a crear o a modificarle el docente
			if(is_numeric($idPersona) && $idPersona>0 && $this->input->post('trato',true) != "" && $this->input->post('colorpicker1',true)!="" && $this->input->post('colorpicker2',true)!="" && ($this->input->post('estadoDocente',true) == '1' || $this->input->post('estadoDocente',true) == '0')){		
				//Cargo el modelo donde estan los datos de las personas
				$this->load->model('m_persona');
				
				//Busco a la persona para corroborar que exista
				$persona = $this->m_persona->get($idPersona);
				
				//Tercera comprobacion: Que la persona pasada por la url sea existente
				if($persona->num_rows() == 1){
					//Cargo el modelo donde estan los datos de los docentes
					$this->load->model('m_docente');
					
					//Busco al docente para corroborar si existe o no
					$docente = $this->m_docente->get2($idPersona);
					
					//Cuarta comprobacion: Si la persona ya es docente, modifico los datos, caso contrario, lo creo.
					//POR EL MISMO MOTIVO QUE EN USUARIOS, SOLO EL ELSE SERIA EJECUTADO. EL CASO VERDADERO NUNCA SE EJECUTARIA
					if($docente->num_rows()==1){
						//Guardamos el id del archivo actual. Cero si no tiene asignado ninguno
						$idArchivoActual = $docente->row()->idArchivoCurriculum;					
						
						//Resultado 0 quiere decir que nada se ha modificado
						$resultado = 0;
						
						//Cargo el modelo donde estan los datos de los archivos
						$this->load->model('m_archivo');
						
						//Detalles de las configuraciones del archivo a subir (un documento en este caso)
						$config['upload_path'] = "./archivosPrivados-FPCL3QFs6DkBHihS3aJI/docentes";
						$config['allowed_types'] = 'doc|docx|xls|xlsx|pdf|ppt|xppt|pps';
						$config['max_size'] = '10000';
						$this->load->library('upload', $config);
						$this->upload->initialize($config);
						
						$archivo = '';
						//Si no se subio el archivo hacer lo siguiente
						if (!$this->upload->do_upload('curriculum')){
							$mensaje = ' No se ha subido ning\u00fan archivo curriculum o su archivo est\u00e1 fuera de las especificaciones.';
						//Si se subio el archivo hacer lo siguiente
						}else{
							//Datos del archivo subido
							$upload_data = $this->upload->data();
							$archivo = $upload_data['file_name'];
							$extensionArchivo = $upload_data['file_ext'];
							
							//Mensaje que se va a mostrar
							$mensaje = ' Se ha subido el curriculum correctamente.';
							
							// Determine Content Type
							switch ($upload_data['file_ext']){
							  case ".pdf": $ctype="application/pdf"; break; 
							  case ".exe": $ctype="application/octet-stream"; break; 
							  case ".zip": $ctype="application/zip"; break; 
							  case ".doc": $ctype="application/msword"; break; 
							  case ".xls": $ctype="application/vnd.ms-excel"; break; 
							  case ".ppt": $ctype="application/vnd.ms-powerpoint"; break; 
							  case ".gif": $ctype="image/gif"; break; 
							  case ".png": $ctype="image/png"; break; 
							  case ".jpeg": 
							  case ".jpg": $ctype="image/jpg"; break; 
							  default: $ctype="application/force-download"; 
							}
							
							//Si ya tenia archivo lo modificamos, si no tenia, creamos un nuevo registro en la base de datos
							$nuevoHash = random_string('alnum',20).$upload_data['file_ext'];
																			
							if($idArchivoActual != 0){
								//Modificamos el archivo en la base de datos
								$resultado += $this->m_archivo->modificar($idArchivoActual, $nuevoHash, $upload_data['file_name'], $upload_data['file_ext'], $ctype);
							}else{
								//Creamos el archivo en la base de datos
								$resultado += $this->m_archivo->crear($nuevoHash, $this->session->userdata('idUsuarioLog'), "archivosPrivados-FPCL3QFs6DkBHihS3aJI/docentes", $upload_data['file_name'], $upload_data['file_ext'], $ctype, 1, 1, $this->session->userdata('idUsuarioLog'));
								$idArchivoActual = $this->db->insert_id();
							}
						}
						
						//Formato fecha ARGENTINA
						$fecha1=$this->input->post('fechaIngresoDocente',true);
						//Formato fecha EEUU
						if($fecha1!="")$fecha2=date("Y-m-d",strtotime($fecha1));
						else $fecha2=null;
						
						//Modificamos el docente
						$resultado += $this->m_docente->modificar($docente->row()->idDocente,
																 $this->input->post('trato',true),
																 $this->input->post('colorpicker1',true),
																 $this->input->post('colorpicker2',true),
																 $fecha2,
																 $idArchivoActual,
																 $this->input->post('estadoDocente',true));
					}else{
						//Resultado 0 quiere decir que nada se ha modificado
						$resultado = 0;
						
						//Cargo el modelo donde estan los datos de los archivos
						$this->load->model('m_archivo');
						
						//Detalles de las configuraciones del archivo a subir (un documento en este caso)
						$config['upload_path'] = "./archivosPrivados-FPCL3QFs6DkBHihS3aJI/docentes";
						$config['allowed_types'] = 'doc|docx|xls|xlsx|pdf|ppt|xppt|pps';
						$config['max_size'] = '10000';
						$this->load->library('upload', $config);
						$this->upload->initialize($config);
						
						$archivo = '';
						//Si no se subio el archivo hacer lo siguiente
						if (!$this->upload->do_upload('curriculum')){
							$mensaje = ' No se ha subido ning\u00fan archivo curriculum o su archivo est\u00e1 fuera de las especificaciones.';
						//Si se subio el archivo hacer lo siguiente
						}else{
							//Datos del archivo subido
							$upload_data = $this->upload->data();
							$archivo = $upload_data['file_name'];
							$extensionArchivo = $upload_data['file_ext'];
							
							//Mensaje que se va a mostrar
							$mensaje = ' Se ha subido el curriculum correctamente.';
							
							// Determine Content Type
							switch ($upload_data['file_ext']){
							  case ".pdf": $ctype="application/pdf"; break; 
							  case ".exe": $ctype="application/octet-stream"; break; 
							  case ".zip": $ctype="application/zip"; break; 
							  case ".doc": $ctype="application/msword"; break; 
							  case ".xls": $ctype="application/vnd.ms-excel"; break; 
							  case ".ppt": $ctype="application/vnd.ms-powerpoint"; break; 
							  case ".gif": $ctype="image/gif"; break; 
							  case ".png": $ctype="image/png"; break; 
							  case ".jpeg": 
							  case ".jpg": $ctype="image/jpg"; break; 
							  default: $ctype="application/force-download"; 
							}
							
							//Guardamos el hash para actualizar la pantalla
							$nuevoHash = random_string('alnum',20).$upload_data['file_ext'];
							
							//Creamos el archivo en la base de datos
							$resultado += $this->m_archivo->crear($nuevoHash, $this->session->userdata('idUsuarioLog'), "archivosPrivados-FPCL3QFs6DkBHihS3aJI/docentes", $upload_data['file_name'], $upload_data['file_ext'], $ctype, 1, 1, $this->session->userdata('idUsuarioLog'));
							$idArchivoActual = $this->db->insert_id();
						}
						
						//Formato fecha ARGENTINA
						$fecha1=$this->input->post('fechaIngresoDocente',true);
						//Formato fecha EEUU
						if($fecha1!="")$fecha2=date("Y-m-d",strtotime($fecha1));
						else $fecha2=null;
						
						//Creamos el docente
						$resultado += $this->m_docente->crear($idPersona,
															  $this->input->post('trato',true),
															  $this->input->post('colorpicker1',true),
															  $this->input->post('colorpicker2',true),
															  $fecha2,
															  $idArchivoActual,
															  $this->input->post('estadoDocente',true),
															  $this->session->userdata('idUsuarioLog'));
					}
					
					if($archivo != '')	echo("<script> window.parent.actualizarArchivo('".base_url() .'archivo/hash/'.$nuevoHash."');</script>");
								
					if($resultado >= 1){										
						echo("<script> alert('El docente se ha modificado correctamente. ".$mensaje."');</script>");
					}else{
						echo("<script> alert('El docente no se ha modificado. Ha habido un error o los datos permanecieron iguales.');</script>");
					}
				} else {
					//El registro no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra los alumnos del docente logueado segun la division seleccionada.
	//Ultima verificación: 30-10-2014
	function misAlumnos($idCicloLectivo=null, $idTurno=null, $idCurso=null, $idDivision=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y tenga el permiso docente activo.
		if($this->session->userdata('sesionIniciada') == 'Si' && $this->session->userdata('permisoDocente') == '1'){
			//Segunda comprobacion: Que la variables de sesion del docente esten creadas e inicializadas.
			if(is_numeric($this->session->userdata('idDocenteLog')) && $this->session->userdata('idDocenteLog')>0){
				//Tercera comprobacion: Que idCicloLectivo pasado sea numerico y mayor o igual que cero. Lo mismo para el turno, el curso y la division
				if(is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idTurno) && $idTurno>=0 && is_numeric($idCurso) && $idCurso>=0 && is_numeric($idDivision) && $idDivision>=0){
					//Cargo el modelo donde estan los datos de los ciclos lectivos
					$this->load->model('m_ciclo_lectivo');
					
					//Busco al ciclo lectivo para comprobar que existe
					$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
					
					//Cargo el modelo donde estan los datos de los turnos
					$this->load->model('m_turno');
					
					//Busco al turno para comprobar que existe
					$turno = $this->m_turno->get($idTurno);
					
					//Cargo el modelo donde estan los datos de los cursos
					$this->load->model('m_curso');
					
					//Busco al curso para comprobar que existe
					$curso = $this->m_curso->get($idCurso);
					
					//Cargo el modelo donde estan los datos de las divisiones
					$this->load->model('m_division');
					
					//Busco a la division para comprobar que existe
					$division = $this->m_division->get($idDivision);
					
					//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero. Lo mismo para el turno, curso y division
					if(($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && ($turno->num_rows() == 1 || $idTurno==0) && ($curso->num_rows() == 1 || $idCurso==0) && ($division->num_rows() == 1 || $idDivision==0)){
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el que haya sido pasado
						if($idCicloLectivo==0){
							//Busco el ciclo lectivo vigente
							$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
							
							if($cicloLectivoVigente->num_rows() == 1){
								//Le paso a la vista el id del ciclo lectivo vigente
								$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
							}else{
								//No hay ciclo lectivo seleccionado ni vigente
								$datos['idCicloLectivoSel'] = 0;
							}
						}else{
							//Le paso a la vista el id del ciclo lectivo pasado por la url
							$datos['idCicloLectivoSel'] = $idCicloLectivo;
						}
						
						//Le paso a la vista el id del turno
						$datos['idTurnoSel'] = $idTurno;
						
						//Le paso a la vista el id del curso
						$datos['idCursoSel'] = $idCurso;
						
						//Le paso a la vista el id de la division
						$datos['idDivisionSel'] = $idDivision;
						
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Restricciones a los ciclos, turnos, cursos y divisiones
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						$restriccion1 = "";
						$restriccion2 = "";
						$restriccion3 = "";
						if($idCicloLectivo==0){
							//Busco el ciclo lectivo vigente
							$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
							
							if($cicloLectivoVigente->num_rows() == 1){
								$restriccion1 = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
							}else{
								$restriccion1 = " AND curso.idCicloLectivo=0";
							}
						}else{
							$restriccion1 = " AND curso.idCicloLectivo=".$idCicloLectivo;					
						}
						
						//Si idTurno es igual a cero la restriccion esta vacia por lo que se ven todos los registros sin tener en cuenta el turno.
						if($idTurno!=0)
							$restriccion1 .= " AND curso.idTurno=".$idTurno;
						
						//Restringimos la busqueda de las divisiones del curso pasado por la url
						$restriccion2 = " AND division.idCurso=".$idCurso;
						
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Busco todos los ciclos lectivos en donde el docente da alguna materia
						$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar(" AND ciclolectivo.idCicloLectivo IN (SELECT curso.idCicloLectivo 
																													  FROM docentexasignatura, asignatura, division, curso
																													  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND
																															asignatura.idDivision=division.idDivision AND
																															division.idCurso=curso.idCurso AND
																															docentexasignatura.estado=1 AND
																															asignatura.estado=1 AND
																															division.estado=1 AND
																															curso.estado=1 AND
																															docentexasignatura.idDocente=".$this->session->userdata('idDocenteLog').")");
						
						//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo de filtrado
						$datos['ciclosLectivos'] = $listadoCiclosLectivos;
						
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Busco todos los turnos activos
						$listadoTurnos = $this->m_turno->buscarActivos();
						
						//Le paso el listado de todos los turnos a la vista para que los muestre en un combo de filtrado
						$datos['turnos'] = $listadoTurnos;
																								
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Cargo el modelo donde estan los datos de los cursos registrados para pedirle un listado con todos ellos
						$this->load->model('m_curso');
						
						//Busco todos los cursos activos en donde el docente da alguna materia
						$listadoCursos = $this->m_curso->buscarActivos($restriccion1." AND curso.idCurso IN (SELECT curso.idCurso
																											 FROM docentexasignatura, asignatura, division, curso
																											 WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND
																												   asignatura.idDivision=division.idDivision AND
																												   division.idCurso=curso.idCurso AND
																												   docentexasignatura.estado=1 AND
																												   asignatura.estado=1 AND
																												   division.estado=1 AND
																												   curso.estado=1 AND
																												   docentexasignatura.idDocente=".$this->session->userdata('idDocenteLog').")");
						
						//Le paso el listado de todos los cursos a la vista para que los muestre en un combo de filtrado
						$datos['cursos'] = $listadoCursos;
						
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Cargo el modelo donde estan los datos de las divisiones registradas para pedirle un listado con todas ellas
						$this->load->model('m_division');
						
						//Busco todas las divisiones activas en donde el docente da alguna materia
						$listadoDivisiones = $this->m_division->buscarActivos($restriccion1 . $restriccion2 . " AND division.idDivision IN (SELECT division.idDivision
																																			FROM docentexasignatura, asignatura, division, curso
																																			WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND
																																				  asignatura.idDivision=division.idDivision AND
																																				  division.idCurso=curso.idCurso AND
																																				  docentexasignatura.estado=1 AND
																																				  asignatura.estado=1 AND
																																				  division.estado=1 AND
																																				  curso.estado=1 AND
																																				  docentexasignatura.idDocente=".$this->session->userdata('idDocenteLog').")");
						
						//Le paso el listado de todas las divisiones a la vista para que los muestre en un combo
						$datos['divisiones'] = $listadoDivisiones;
						
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Cargo el modelo donde estan los datos de los alumnos asignados a una division para pedirle un listado con todos ellos
						$this->load->model('m_alumnoxdivision');
						
						//Busco los alumnos cargados a la division en cuestion. La ultima parte de la consulta sirve para validar que el docente da realmente en esa division alguna materia.
						$restriccion3 = "AND alumnoxdivision.idDivision=".$this->db->escape($idDivision)." AND alumnoxdivision.estado=1 AND alumnoxdivision.idDivision IN (SELECT division.idDivision
																																											FROM docentexasignatura, asignatura, division, curso
																																											WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND
																																												  asignatura.idDivision=division.idDivision AND
																																												  division.idCurso=curso.idCurso AND
																																												  docentexasignatura.estado=1 AND
																																												  asignatura.estado=1 AND
																																												  division.estado=1 AND
																																												  curso.estado=1 AND
																																												  docentexasignatura.idDocente=".$this->session->userdata('idDocenteLog').")";
						
						//Busco todos los alumnos segun las restricciones
						$listadoAlumnos = $this->m_alumnoxdivision->buscar($restriccion3);
						
						//Le paso el listado de todos los alumnos asignados a la vista para que los muestre en una tabla
						$datos['alumnos'] = $listadoAlumnos;
						
						//Cargo el modelo donde estan los datos de los tutores x alumno
						$this->load->model('m_tutorxalumno');
						
						//Cargo la vista donde se muestra los perfiles de los alumnos del docente logueado y la guardo en una variable para pasarsela a la vista principal
						$datosPrincipal['vista'] = $this->load->view('v_docentes_mis_alumnos', $datos, true);
						
						//Cargo la vista principal con los datos de la vista
						$this->load->view('v_sistema', $datosPrincipal);
					} else {
						//El o los registros no existen.
						//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
						$this->session->sess_destroy();
						//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
						redirect(site_url("inicio"));
					}
				} else {
					//No se han pasado los parametros minimos necesarios para consultar los registros.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login
					redirect(site_url("inicio"));
				}
			} else {
				//No se han inicializado los parametros necesarios.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra un listado con todas las asignaturas dictadas por un docente
	//Filtros:
	//Si idCicloLectivo es igual a cero, hay que mostrar todas las asignaturas dictadas en el ciclo vigente. Nada si no hay ciclo vigente.
	//Si idCicloLectivo es distinto de cero, hay que mostrar solo las asignaturas dictadas del ciclo en cuestion.
	//Ultima verificación: 23/09/2014 ; 23-11-2014
	function misAsignaturas($idCicloLectivo=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && $this->session->userdata('permisoDocente') == '1'){
			//Segunda comprobacion: Que idCicloLectivo pasado sea numerico y mayor o igual que cero. Que idPersonaLog e idDocenteLog sea mayor que cero.
			if(is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($this->session->userdata('idPersonaLog')) && $this->session->userdata('idPersonaLog')>0 && is_numeric($this->session->userdata('idDocenteLog')) && $this->session->userdata('idDocenteLog')>0){
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de las personas
				$this->load->model('m_persona');
				
				//Busco a la persona para comprobar que existe
				$persona = $this->m_persona->get($this->session->userdata('idPersonaLog'));
				
				//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero. Que la persona logueada sea existente.
				if(($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && $persona->num_rows() == 1){
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los ciclos lectivos
					$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar();
					
					//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo de filtrado
					$datos['ciclosLectivos'] = $listadoCiclosLectivos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el que haya sido pasado
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							//Le paso a la vista el id del ciclo lectivo vigente
							$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							//No hay ciclo lectivo seleccionado ni vigente
							$datos['idCicloLectivoSel'] = 0;
						}
					}else{
						//Le paso a la vista el id del ciclo lectivo pasado por la url
						$datos['idCicloLectivoSel'] = $idCicloLectivo;
					}
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a las asignaturas para buscar las dictadas por el docente
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion = "";
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							$restriccion = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							$restriccion = " AND curso.idCicloLectivo=0";
						}
					}else{
						$restriccion = " AND curso.idCicloLectivo=".$idCicloLectivo;
					}
					
					//Solo busco las asignaturas dictadas por el docente logueado
					$restriccion .= " AND docente.idDocente=".$this->session->userdata('idDocenteLog');
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de las asignaciones registradas para pedirle un listado con todas ellas
					$this->load->model('m_asignacion_docente');
					
					//Busco todas las asiganturas segun las restricciones
					$listadoAsignaciones = $this->m_asignacion_docente->buscarActivos($restriccion);
					
					//Le paso el listado de todas las asignaciones a la vista para que las muestre en una tabla
					$datos['asignaciones'] = $listadoAsignaciones;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo la vista donde se muestra la tabla de asignaturas dictadas y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_docentes_asignaturas', $datos, true);
					
					//Cargo la vista principal con los datos de la vista consultar asignaturas dictadas
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para consultar los registros.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra el horario del docente logueado segun el ciclo lectivo seleccionado.
	//Ultima verificación:
	function misHorarios($idCicloLectivo=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y tenga el permiso docente activo.
		if($this->session->userdata('sesionIniciada') == 'Si' && $this->session->userdata('permisoDocente') == '1'){
			//Segunda comprobacion: Que la variables de sesion del docente esten creadas e inicializadas.
			if(is_numeric($this->session->userdata('idDocenteLog')) && $this->session->userdata('idDocenteLog')>0){
				//Tercera comprobacion: Que idCicloLectivo pasado sea numerico y mayor o igual que cero.
				if(is_numeric($idCicloLectivo) && $idCicloLectivo>=0){
					//Cargo el modelo donde estan los datos de los ciclos lectivos
					$this->load->model('m_ciclo_lectivo');
					
					//Busco al ciclo lectivo para comprobar que existe
					$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
					
					//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero.
					if($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0){
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el que haya sido pasado
						if($idCicloLectivo==0){
							//Busco el ciclo lectivo vigente
							$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
							
							if($cicloLectivoVigente->num_rows() == 1){
								//Le paso a la vista el id del ciclo lectivo vigente
								$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
							}else{
								//No hay ciclo lectivo seleccionado ni vigente
								$datos['idCicloLectivoSel'] = 0;
							}
						}else{
							//Le paso a la vista el id del ciclo lectivo pasado por la url
							$datos['idCicloLectivoSel'] = $idCicloLectivo;
						}
																		
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Restricciones a los ciclos lectivos para mostrar solo los que en el docente da al menos alguna asignatura
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						$restriccion1 = "";
						
						if($idCicloLectivo==0){
							//Busco el ciclo lectivo vigente
							$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
							
							if($cicloLectivoVigente->num_rows() == 1){
								$restriccion1 = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
							}else{
								$restriccion1 = " AND curso.idCicloLectivo=0";
							}
						}else{
							$restriccion1 = " AND curso.idCicloLectivo=".$idCicloLectivo;					
						}
						
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Busco todos los ciclos lectivos en donde el docente da alguna materia
						$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar(" AND ciclolectivo.idCicloLectivo IN (SELECT curso.idCicloLectivo 
																													  FROM docentexasignatura, asignatura, division, curso
																													  WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND
																															asignatura.idDivision=division.idDivision AND
																															division.idCurso=curso.idCurso AND
																															docentexasignatura.estado=1 AND
																															asignatura.estado=1 AND
																															division.estado=1 AND
																															curso.estado=1 AND
																															docentexasignatura.idDocente=".$this->session->userdata('idDocenteLog').")");
						
						//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo de filtrado
						$datos['ciclosLectivos'] = $listadoCiclosLectivos;
						
						//Cargo el modelo donde estan los datos de los turnos registrados para pedirle un listado con todos ellos
						$this->load->model('m_turno');
						
						//Busco todos los turnos tanto activos como inactivos, menos los borrados(-1)
						$listadoTurnos = $this->m_turno->buscarActivos();
						
						//Le paso el listado de todos los turnos a la vista para que muestre los horarios en tablas por turnos
						$datos['turnos'] = $listadoTurnos;
						
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////					
						//Cargo el modelo donde estan los datos de los modulos registrados para pedirle un listado con todos ellos
						$this->load->model('m_modulo');
						
						//Cargo la vista donde se muestra los horarios del docente y la guardo en una variable para pasarsela a la vista principal
						$datosPrincipal['vista'] = $this->load->view('v_docentes_mis_horarios', $datos, true);
						
						//Cargo la vista principal con los datos de la vista
						$this->load->view('v_sistema', $datosPrincipal);
					} else {
						//El o los registros no existen.
						//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
						$this->session->sess_destroy();
						//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
						redirect(site_url("inicio"));
					}
				} else {
					//No se han pasado los parametros minimos necesarios para consultar los registros.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login
					redirect(site_url("inicio"));
				}
			} else {
				//No se han inicializado los parametros necesarios.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login
			redirect(site_url("inicio"));
		}
	}
}